/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Bean;

import Controller.ClienteDAO;
import Controller.UsuarioDAO;
import Model.Usuario;
import java.awt.event.ActionEvent;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;


/**
 *
 * @author iron
 */
@ManagedBean(name="usuario")
@SessionScoped
public class UsuarioMBean {
    Usuario obj;
    ArrayList<Usuario> lista;
    Usuario usuarioEscolhido;

    
    public UsuarioMBean(){
        obj = new Usuario();
    }
    
    public void Salvar(ActionEvent event){
        try{
            if(!validaCampos()){
                return;
            }
            UsuarioDAO.INSTANCE.insert(obj.getLogin(), obj.getSenha(), obj.getNome());
            obj = new Usuario();
        }catch(Exception ex){
            ex.printStackTrace();
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage((FacesMessage.SEVERITY_WARN),"Falhou!",null));
            return;
        }
    FacesContext.getCurrentInstance().addMessage(null, new FacesMessage((FacesMessage.SEVERITY_INFO),"Usuário Cadastrado",null));
    }

    

    private boolean validaCampos() {
        boolean retorno = true;
        
        if(obj.getLogin().isEmpty()) {
            retorno = false;
        }
        
        if(obj.getNome().isEmpty()) {
            retorno = false;
        }
        
        if(obj.getSenha().isEmpty()) {
            retorno = false;
        }
        
        return retorno;
    }
    
    
     public Usuario getObj() {
        return obj;
    }

    public void setObj(Usuario obj) {
        this.obj = obj;
    }
    public ArrayList<Usuario> getLista() {
        ArrayList<Usuario> lista = null;
        try {
            lista = UsuarioDAO.INSTANCE.lista();
        } catch (SQLException ex) {
            Logger.getLogger(UsuarioMBean.class.getName()).log(Level.SEVERE, null, ex);
        } catch (Exception ex) {
            Logger.getLogger(UsuarioMBean.class.getName()).log(Level.SEVERE, null, ex);
        }
        
        return lista;
    }
    
    public void deletar(ActionEvent event){
        try{
            if(usuarioEscolhido == null){
                FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Escolha um Usuario para deletar"));
            }
            UsuarioDAO.INSTANCE.delete(usuarioEscolhido.getLogin());
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Usuario excluido com Sucesso"));
            
            usuarioEscolhido = null;
            }catch(Exception ex){
            ex.printStackTrace();
            System.out.println("Falhou!");
        }
        //RequestContext.getCurrentInstance().execute("tabelaCliente.update()");
    }  

    public void setLista(ArrayList<Usuario> lista) {
        this.lista = lista;
    }

    public Usuario getUsuarioEscolhido() {
        return usuarioEscolhido;
    }

    public void setUsuarioEscolhido(Usuario usuarioEscolhido) {
        this.usuarioEscolhido = usuarioEscolhido;
    }
    
    
    
}
